wayland: Add API to retrieve the Wayland output
authorOlivier Fourdan <ofourdan@redhat.com>
Tue, 17 May 2016 13:02:01 +0000 (15:02 +0200)
committerOlivier Fourdan <ofourdan@redhat.com>
Wed, 18 May 2016 17:07:27 +0000 (19:07 +0200)
In Wayland, surfaces get an enter/leave notification each time they
enter or leave an output.

Add an API to GdkWaylandWindow to retrieve the output the window has
last entered.

https://bugzilla.gnome.org/show_bug.cgi?id=766566

docs/reference/gdk/gdk3-sections.txt
gdk/wayland/gdkwaylandwindow.h
gdk/wayland/gdkwindow-wayland.c

index 0ca8d48dddc27101fdbbb4ff7281797d72397f5d..6dc208c21867611d54f3ef9309a30e1fffdf7df4 100644 (file)
@@ -1245,6 +1245,7 @@ gdk_wayland_display_get_wl_display
 gdk_wayland_display_get_xdg_shell
 gdk_wayland_window_get_wl_surface
 gdk_wayland_window_set_use_custom_surface
+gdk_wayland_window_get_wl_output
 
 <SUBSECTION Standard>
 GDK_TYPE_WAYLAND_DEVICE
index 73f1da05ba7ee7ce7878f70240fa85b81ce87ac0..fb84d347ed855c786b3103f72642bd268f0932bc 100644 (file)
@@ -59,6 +59,9 @@ void                     gdk_wayland_window_set_dbus_properties_libgtk_only (Gdk
                                                                             const char *window_object_path,
                                                                             const char *application_object_path,
                                                                             const char *unique_bus_name);
+GDK_AVAILABLE_IN_3_22
+struct wl_output        *gdk_wayland_window_get_wl_output       (GdkWindow *window);
+
 
 G_END_DECLS
 
index 3b703181619782235035188ae5c50c7f75450e42..64b3cd84571d3292b6e8e37e24e91e94f815e92b 100644 (file)
@@ -2954,6 +2954,32 @@ gdk_wayland_window_get_wl_surface (GdkWindow *window)
   return GDK_WINDOW_IMPL_WAYLAND (window->impl)->display_server.wl_surface;
 }
 
+/**
+ * gdk_wayland_window_get_wl_output:
+ * @window: (type GdkWaylandWindow): a #GdkWindow
+ *
+ * Returns the Wayland output a #GdkWindow has last entered.
+ *
+ * Returns: (transfer none): a Wayland wl_output or NULL if the #GdkWindow
+ * is not associated with any Wayland wl_output.
+ *
+ * Since: 3.22
+ */
+struct wl_output *
+gdk_wayland_window_get_wl_output (GdkWindow *window)
+{
+  GdkWindowImplWayland *impl;
+
+  g_return_val_if_fail (GDK_IS_WAYLAND_WINDOW (window), NULL);
+
+  impl = GDK_WINDOW_IMPL_WAYLAND (window->impl);
+  /* We pick the head of the list as this is the last entered output */
+  if (impl->display_server.outputs)
+    return (struct wl_output *) impl->display_server.outputs->data;
+
+  return NULL;
+}
+
 static struct wl_egl_window *
 gdk_wayland_window_get_wl_egl_window (GdkWindow *window)
 {